package com.ln.store.domain;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Cart {

	// 总计
	private double total;
	// 个数不确定的购物项
	private Map<String, CartItem> map = new HashMap<String, CartItem>();
	
	// 添加购物项
		// 当用户点击加入购物车按钮，可以将当前要购买的商品id，商品数量,发送到服务端，服务端根据商品id查询到商品信息
		// 有了商品信息Product对象，有了要购买商品数量，当前的购物项也就可以获取到了
		public void addCartItem(CartItem cartItem) {
			// 将当前的购物项加入购物车之前，判断之前是否买过这类商品
			// 如果没有买过 list.add(CartItem)
			// 如果买过： 获取到原先的数量，获取到本次的数量，相加之后设置到原先购物项上
			
			//获取商品的Pid
			String pid = cartItem.getProduct().getPid();
			
			if (map.containsKey(pid)) {
				CartItem oldItem = map.get(pid);
				oldItem.setNum(oldItem.getNum()+cartItem.getNum());
			}else {
				map.put(pid, cartItem);
			}
			
		}

		// 移除购物项
		public void removeCartItem(String pid) {
			map.remove(pid);
		}

		// 清空购物车
		public void clearCart() {
			map.clear();

		}
		
		//获取总的金额
		public double getTotal() {
			//清零
			total = 0;
			//获取Map所有的购物项
			Collection<CartItem> values = map.values();
			//遍历相加
			for (CartItem cartItem : values) {
				total+=cartItem.getSubTotal();
			}
			return total;
		}
		
		//获取购物项
		public Collection<CartItem> getCartItems() {
			return map.values();
		}

}
